package cn.lcsjsxy.yxc.servlet.servlet;

import jakarta.servlet.RequestDispatcher;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * 一、请求转发
 * 》请求转发时，请求和响应对象会继续传递给下一个资源
 * 》请求中的参数可以继续向下传递
 * 》请求转发时服务器内部的行为，客户端是不知道的
 * 》客户端只产生了一次请求
 * 1.请求转发是通过HttpServletRequest对象实现的
 * 2.请求转发是服务器内部行为，对客户端是屏蔽的
 * 3.客户端只产生了一次请求，服务端只产生了一对request和response对象
 * 4.客户端的地址栏是不变的
 * 5.请求的参数是可以继续传递的
 * 6.目标资源可以是servlet动态资源，也可以是html静态资源
 * 7.目标资源可以是WEB-INF下的受保护的资源，该i方式也是WEB-INF下的资源的唯一访问方式
 * 8.目标资源不可以是外部的资源
 */
@WebServlet(value = "/servletA")
public class ServletA extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("servletA执行了");

        String money=req.getParameter("money");
        System.out.println("servletA获得参数：money="+money);

        //请求u转发给ServletB
        //获得请求转发器
//        RequestDispatcher rd = req.getRequestDispatcher("ServletB");
//        RequestDispatcher rd = req.getRequestDispatcher("a.html")
//        RequestDispatcher rd = req.getRequestDispatcher("WEB-INF/b.html");
        RequestDispatcher rd = req.getRequestDispatcher("http://www.lcsjsxy.cn");
        //让请求转发器作出转发动作
        rd.forward(req, resp);
    }
}
